﻿using BonjourQuotation.ObjectModel.AccountData;
using BonjourQuotation.ObjectModel.BusinessData;
using BonjourQuotation.ObjectModel.ErrorData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BonjourQuotation.DataAccess.Repositories
{
    public interface IAccountRepository : IDisposable
    {
        LoginResponseData Login(LoginRequestData UserData);
        CreateUserResponseData CreateUser(CreateUserRequestData UserData);
        List<ManageUsersGridBData> GetAllUsers();
        UserDetailsBData GetUserDetailsByEmpID(int EmployeeID);
        ErrorBInfo PostUserDetailsData(UserDetailsBData Data);
        ErrorBInfo DeleteUserById(int UserId);
        EditUserBData GetEditUserData(int UserId);
        ErrorBInfo PostEditUserData(EditUserBData UserData);
        ToolBData LoadTools();
        ProfileBData LoadProfiles(string UserName);
        ToolBData LoadToolTab(int ToolID);
        ToolTabColumnPermisionsCanViewCanEditHasFilterGridBData LoadToolTabColumnPermissionsCanViewCanEditHasFilter(int UserID, int ToolTabID);
        ToolTabColumnPermisionsCanViewGridBData LoadToolTabColumnPermissionsCanView(int UserID, int ToolTabID);
        ToolTabColumnPermisionsCanViewCanEditGridBData LoadToolTabColumnPermissionsCanViewCanEdit(int UserID, int ToolTabID);
        ToolTabColumnPermisionsCanViewCanEditHasFilterGridBData LoadProfileToolTabColumnPermissionsCanViewCanEditHasFilter(string UserName, string ProfileName, int ProfileID, int ToolTabID);
        ToolTabColumnPermisionsCanViewGridBData LoadProfileToolTabColumnPermissionsCanView(string UserName, string ProfileName, int ProfileID, int ToolTabID);
        ToolTabColumnPermisionsCanViewCanEditGridBData LoadProfileToolTabColumnPermissionsCanViewCanEdit(string UserName, string ProfileName, int ProfileID, int ToolTabID);
        ErrorBInfo ApplyProfileToUser(int UserID, int ProfileID);
        ErrorBInfo SaveProfileData(string UserName, int ProfileID, string ProfileName);
        ErrorBInfo SaveToolTabColumnPermissionsCanViewCanEditHasFilter(ToolTabColumnPermisionsCanViewCanEditHasFilterGridBData Data, string UserName);
        ErrorBInfo SaveToolTabColumnPermissionsCanView(ToolTabColumnPermisionsCanViewGridBData Data, string UserName);
        ErrorBInfo SaveToolTabColumnPermissionsCanViewCanEdit(ToolTabColumnPermisionsCanViewCanEditGridBData Data, string UserName);
        Dictionary<string, string> LoadState();
        Dictionary<int, string> LoadCity(int CountryID, string StateID);
        string GetUserName(int UserID);
    }
}
